import * as types from "../action-types";

const actions = {
  add1() {
    return { type: types.ADD1 };
  },
  minus1() {
    return { type: types.MINUS1 };
  },
  // Redux-Thunk允许动作创建者（Action Creator）返回一个函数，而不是一个普通的动作对象。
  // 这个返回的函数可以接收dispatch和getState作为参数，用于在内部发起异步操作并在合适的时候分发新的动作。
  thunkAdd1(data) {
    debugger
    return function (dispatch, getState) {
      // 获取的是上一次的状态
      console.log(dispatch, getState(), "thunkAdd1");
      setTimeout(async function () {
        dispatch({ type: types.ADD1, data });
      }, 2000);
    };
  },
  promiseAdd1() {
    return {
      type: types.ADD1,
      payload: new Promise((resolve, reject) => {
        setTimeout(() => {
          let result = Math.random();
          if (result > 0.5) {
            resolve(result);
          } else {
            reject(result);
          }
        }, 1000);
      }),
    };
  },
  promiseAdd2() {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve({ type: types.ADD1})
      }, 1000)
    })
  }
};
export default actions;
